tensorflow教程一:安装和jupyter notebook的使用 |
您所在的位置:网站首页 › jupyter notebook安装 › tensorflow教程一:安装和jupyter notebook的使用 |
![]() 关于tensorflow cpu版本的安装没有什么可以说的,比较重要的是gpu版本的安装。这个我在网上看了很多教程都不太靠谱,其中走了很多弯路,首先这个东西用anaconda绝对是比较简单安装的,不过前提是你不要去瞎折腾。我搞这个东西就搞了好久。奉劝你们不要轻易去尝试网上的一些教程尤其是csdn。我觉得b站的教程还是挺靠谱的。 这个是用conda一条指令安装。 ![]() 这个讲得比较详细。还有文字教程: ![]() 我最后卸载anaconda重装,最后的步骤和第一个差不多,如果是自己安装CUDA和cudnn就需要注意对应关系。gpu 1.14.0是可以用CUDA Toolkit 10.0的,这个我用的就是。 在https://www.tensorflow.org/install/source_windows可以找到对应关系。cudnn下载需要登陆一下,用微信就可以。我这里就不再赘述我的痛苦经历了。为什么不安cpu版?太慢了啊。我的GPU 虽然不是太好,也就是1050,不过也很快。 按完以后一般用一段代码测试。 ![]() 这个主要是加载库,链接库会比较慢,用过visual studio的都知道,第一次运行都是很慢的。 第二次就会快。 ![]() 安装过程中有什么问题可以私信我,我能解决的一定都给解决。 Jupyter notebook前面曾经使用过它,那我们为什么要用它呢?这个参考http://m.elecfans.com/article/687743.html 如果每个数据科学家都应该使用或必须使用一种工具,毫无疑问,它就是Jupyter Notebook(曾用名iPython Notebook)。Jupyter Notebook是一个交互式笔记本,它功能强大,支持40多种编程语言,可共享,并提供在同一环境中构建可视化应用的服务。 数据科学家可以在上面创建和共享自己的文档,从实现代码到全面报告,Jupyter Notebook大大简化了开发者的工作流程,帮助他们实现更高的生产力和更简单的多人协作。也正是因为如此,它一直以来都是数据科学家们最喜欢的工具之一。 本文将全面介绍笔记本的安装、操作方法,并深入探讨它的特性和优势。当你读完全文后,我们希望你能找到用Jupyter Notebook帮助自己实现机器学习项目的灵感。 1. 什么是Jupyter Notebook? Jupyter Notebook是一个开源的Web应用程序,旨在方便开发者创建和共享代码文档。 它提供了一个环境,用户可以在里面写代码、运行代码、查看结果,并在其中可视化数据。鉴于这些优点,Jupyter Notebook成了数据科学家眼里的一款人见人爱的工具,它能帮助他们便捷地执行各种端到端任务,如数据清洗、统计建模、构建/训练机器学习模型等。 而对于初学者,Jupyter Notebook也独具魅力。它的一个特色是允许把代码写入独立的cell中,然后单独执行。这样做意味着用户可以在测试项目时单独测试特定代码块,无需从头开始执行代码。虽然其他的IDE环境(如R 0...Studio)也提供了这种功能,但就个人使用情况来看,Jupyter Notebook的单元结构是设计的最好的。 这个笔记本的优势还体现在灵活性和交互性上。Jupyter Notebook支持的编程语言数量高达40余种,除了最基础的Python,它还允许用户在上面运行R语言和SQL等语言。由于它比IDE平台更具交互性,用户也更乐于在各种教程中用它展示代码。 2. 如何安装Jupyter Notebook? Jupyter Notebook原来也叫iPython Notebook,顾名思义,它和Python关系紧密。如果要在PC上安装笔记本,首先你要确保自己已经安装了Python(2.7/3.3或更高),这是必备条件。 Anaconda 官方在文档中强烈建议新用户用Anaconda打包安装Python和Anaconda——所谓懒人方法,小白必备。其实除了提到的两个工具,Anaconda还包含数据科学和机器学习中经常需要用到的各种软件包,只需下载、解压、安装,所有工具就都一步到位了。 下载地址:https://jupyter.readthedocs.io/en/latest/install.html pip 如果你很欣赏自己,或者因为某些因素就是不想用Anaconda,你也可以用pip。当然首先,你得确保自己的机器上有pip的最新版本。 #Linux和OSX pip install -U pip setuptools #Windows python -m pip install -U pip setuptools 然后,安装Jupyter Notebook: #Python2用户看这里 pip install jupyter #Python3用户不要跑 pip3 install jupyter 如果还是有疑问,请看官方文档(英)、官方文档翻译(中)。 3. 入门 安装完成后,如果要运行Jupyter Notebook,你只需在控制台输入以下命令: jupyter notebook 你会看到笔记本打开了你的默认浏览器,网址为http:// localhost:8888/tree。 一般情况下,当你输入命令行后,控制台会出现一行“The Jupyter Notebook is running at……”,如果浏览器因为某些原因无法打开,你就需要复制这个URL,手动打开相应网址。 当笔记本打开后,它的顶部有Files、Running和Clusters三个选项。其中Files中列出了所有文件,Running显示了你已经打开的终端和笔记本,Clusters则是IPython parallel提供的。 如果你想新建一个笔记本,单击面板右侧的“New”,它会跳出4个选项: Python 3 Text File Folder Terminal 选择Text File后,你会得到一个空白的页面。它相当于一个文本编辑器(类似于Ubuntu上的应用程序),你可以在上面输入任何字母、单词和数字,所以选择好编程语言后,你是可以在上面写脚本的。此外,它还提供查找和替换文件中的单词的功能。 选择Folder后,你其实是在编辑文件夹列表。你可以创建一个新文件夹,把所需文档放进里面,或者修改它的名称、直接把它删除。 而Terminal的工作方式和Mac、Linux计算机上的Terminal一样,都是在Web浏览器中创建终端支持。只需在终端输入Python,一个Python脚本就写好了。 由于本文重点介绍的是笔记本,下面我们会重点展示新建“Python 3”后的结果: ![]() 导入最常见的Python库来启动笔记本,如pandas和numpy。在代码上方的菜单中,那些图标依次表示添加、编辑、剪切、向上移动cell、向下移动cell、运行代码、停止运行和撤销。当然也有一些默认的快捷键: https://blog.csdn.net/qq_39973546/article/details/79777992 命令模式 (按键 Esc 开启)Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插入新单元 Y : 单元转入代码状态 M :单元转入markdown状态 R : 单元转入raw状态 1 : 设定 1 级标题 2 : 设定 2 级标题 3 : 设定 3 级标题 4 : 设定 4 级标题 5 : 设定 5 级标题 6 : 设定 6 级标题 Up : 选中上方单元 K : 选中上方单元 Down : 选中下方单元 J : 选中下方单元 Shift-K : 扩大选中上方单元 Shift-J : 扩大选中下方单元 A : 在上方插入新单元 B : 在下方插入新单元 X : 剪切选中的单元 C : 复制选中的单元 Shift-V : 粘贴到上方单元 V : 粘贴到下方单元 Z : 恢复删除的最后一个单元 D,D : 删除选中的单元 Shift-M : 合并选中的单元 Ctrl-S : 文件存盘 S : 文件存盘 L : 转换行号 O : 转换输出 Shift-O : 转换输出滚动 Esc : 关闭页面 Q : 关闭页面 H : 显示快捷键帮助 I,I : 中断Notebook内核 0,0 : 重启Notebook内核 Shift : 忽略 Shift-Space : 向上滚动 Space : 向下滚动 编辑模式 ( Enter 键启动)Tab : 代码补全或缩进 Shift-Tab : 提示 Ctrl-] : 缩进 Ctrl-[ : 解除缩进 Ctrl-A : 全选 Ctrl-Z : 复原 Ctrl-Shift-Z : 再做 Ctrl-Y : 再做 Ctrl-Home : 跳到单元开头 Ctrl-Up : 跳到单元开头 Ctrl-End : 跳到单元末尾 Ctrl-Down : 跳到单元末尾 Ctrl-Left : 跳到左边一个字首 Ctrl-Right : 跳到右边一个字首 Ctrl-Backspace : 删除前面一个字 Ctrl-Delete : 删除后面一个字 Esc : 进入命令模式 Ctrl-M : 进入命令模式 Shift-Enter : 运行本单元,选中下一单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在下面插入一单元 Ctrl-Shift-- : 分割单元 Ctrl-Shift-Subtract : 分割单元 Ctrl-S : 文件存盘 Shift : 忽略 Up : 光标上移或转入上一单元(方向上键) Down :光标下移或转入下一单元(方向下键) ![]() 这个下拉的列表提供了四个选项: Code:这个不言自明,就是你写代码的地方; Markdown:非常常见的轻量级标记语言,用来为代码添加注释和结论; Raw NBConvert:一个命令行工具,可以把你的笔记本转换成另一种格式,如HTML; Heading:添加标题,使你的文档看起来更干净整洁,它现在已经变成Markdown里的一个语法,用两个#表示。 4. Jupyter Notebook的魔术命令 作为iPython的继承者,开发人员已经在Jupyter Notebook中加入预定义的魔术命令(magic function)。这是一种增加便捷性和互动性的工具,如果要查看命令列表,你可以输入(注:通常不需要“%”): %lsmagic 当看到那一串函数列表时,也许你能从中认出几张老面孔,如%clear、%autosave、%debug和%mkdir。只要你以前写过代码,这些函数就几乎是不可避免的。 在Jupyter Notebook中,魔术命令有两种运行方式,一是Line-wise,而是Cell-wise。顾名思义,Line-wise就是当你想执行一个命令行的时候需要用到的,而Cell-wise面向的就不单单是一行了,它作用的是整个cell的代码块。 为了区分两种运行方式,如果是Line-wise,所有命令必须以%字符打头;如果是Cell-wise,则用%%。 Line-wise: %time a = range(10) Cell-wise: %%timeit a = range (10) min(a) 以上只是两个最简单的示例,你可以试着自己运行这些命令,看看其中有什么区别。 ![]() 这里稍微说一下,In[]中的数字是执行的次序,如果中括号里面是*,说明这个单元(cell)正在运行,如果中括号里什么都没有,说明还没有运行,如果你确实运行了,而这个cell还是空的,很可能是和错误(kernel error),这很可能卸载anaconda重装或者重装python导致解释器的路径发生变化导致的,修复方法参考: https://blog.csdn.net/sinat_40730205/article/details/80843775 首先使用jupyter kernelspec list查看安装的内核和位置 进入安装内核目录打开kernel.jason文件,查看Python编译器的路径是否正确 如果不正确python -m ipykernel install --user重新安装内核,如果有多个内核,如果你使用conda create -n python2 python=2,为Python2.7设置conda变量,那么在anacoda下使用activate pyhton2切换python环境,重新使用python -m ipykernel install --user安装内核 重启jupyter notebook即可 一般修改kernel.json就可以解决。如果解决了,文件右上角会出现一个圈。 ![]() 5. 不仅限于Python 之前也提到了,Jupyter Notebook的成功离不开它的灵活性,虽然Python在数据科学和机器学习中都占局主导地位,但对于数据分析任务,其他语言也有各种各样的特色和优势,比如R语言的'ggplot2'软件包就非常好用。在这一点上,Jupyter Notebook的态度是开放的。 如果想在Jupyter Notebook中启用R,你需要先去GitHub上下载'IRKernel'(R的专用kernel),然后按以下8个步骤依次执行(附图解地址): 步骤一:用Anaconda安装Jupyter Notebook; 步骤二:完成下载后,打开Anaconda命令提示符; 步骤三:输入ipython notebook新建ipython笔记本 步骤四:用conda update ipython-notebook这个命令行更新笔记本; 步骤五:输入conda install -c r ipython-notebook r-irkernel安装IRkernel; 步骤六:用R.exe打开R; 步骤七:输入install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = 'http://irkernel.github.io/', type = 'source')安装必要软件包; 步骤八:输入IRkernel::installspec()后再输入quit(),完成操作。 如果是Julia用户,你也可以在Jupyter Notebook中“畅所欲言”。考虑到篇幅因素,有需要的读者请前往www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/查看图文攻略。 和R语言一样,JavaScript用户也需要去Github先下载‘IJavascript’ kernel:github.com/n-riesco/ijavascript。文档里已经明确写出了安装kernel所需的步骤,但要注意的是,记得先装Node.js和npm,这是大前提! https://github.com/jupyter/jupyter/wiki/Jupyter-kernels 有一些支持的核,我们看到 ![]() c++需要xeus-cling。 看了一个安装c++内核的: https://www.learnopencv.com/xeus-cling-run-c-code-in-jupyter-notebook/ ![]() 失败了,windows上jupyter notebook对于c++的支持还是差了一些。好吧,sublime还有存在的价值。 6. Jupyter Notebook的交互式控制面板 在添加小部件前,你需要先导入小部件包: from ipywidgets import widgets 小部件的基本类型是典型的基于输入和按钮的文本输入。你可以参考下面这幅动图,了解交互式小部件的外观: ![]() 这种交互式也是jupyter notebook的一种优势。 7. 快捷键 既然Jupyter Notebook的主打优势是便捷,那它自然少不了方便操作的快捷键。事实上,当你想运行任意代码块时,只需按下Ctrl + Enter就可以了。 下面是本文挑选的一些实用快捷键,有需要的读者可以视情况逐个阅读+尝试,如果今后你会经常用到Jupyter Notebook,那不会这些组合键的你就几乎已经是条咸鱼了。 Jupyter Notebook提供了两种不同的键盘输入模式——Command和Edit。其中Command模式是将键盘和计算机命令绑定在一起,这时单元框线是灰色的(左侧蓝色粗线)。Edit模式允许你将文本(或代码)键入活动单元,这时单元框线是绿色的。 用Esc和Enter分别在Command和Edit模式之间跳转。 ![]() ![]() 更多快捷键介绍(中文):blog.csdn.net/lawme/article/details/51034543 这个就是上面的网页。 8. 有用的扩展 添加扩展是提高Jupyter Notebook效率的一种非常有效的方式,那么安装和使用扩展哪家强?这里我们推荐Nbextensions。 先是安装(pip): pip install jupyter_contrib_nbextensions 安装关联的JavaScript和CSS文件: jupyter contrib nbextension install --user 完成此操作后,你会在Jupyter Notebook主页顶部看到一个'Nbextensions'选项卡。 ![]() ![]() 顺便说一下jupyter的主页在哪里: ![]() 一般在 ![]() 这种东西放在C盘还是不好的。考虑换个地方。参考https://blog.csdn.net/hhl_csdn/article/details/68950917 ![]() ![]() 重启就来到了设置的路径 ![]() ![]() 默认浏览器也是可以换的,不过我觉得谷歌挺好的。 想换的可以看看https://blog.csdn.net/tigerking1017/article/details/78782280 如果要启用一个扩展,只需点击来激活。下面是4个比较有用的扩展。 Code prettify:它可以让你的代码更美观。 ![]() ![]() ![]() 我的jupyter notebook太新了,不兼容。 Printview:生成预览,新增的按钮叫jupyter nbconvert。 Scratchpad:生成一个实验环境(副本)跑代码,不会对笔记本代码造成影响。 下面都会有使用说明。 ![]() Table of Contents (2):抓取所有标题,并显示在浮动窗口中。效果 ![]() 此外,小编也曾经写过一篇《Top 5:五大最实用的Jupyter Notebook扩展插件》,介绍了另外5种好用的扩展,有兴趣的读者可以一起看一看。 上面的都和我的新版本jupyter notebook不兼容。。。。。 9. 保存和共享你的笔记本 这是Jupyter Notebook中最重要和最棒的功能之一。有过写博客经历的读者也许知道这种痛,当你一腔热血想把自己的成果分享给别人时,可能代码格式还没转完你就放弃了。大多数笔记本都采用json格式,它不是很适合共享,也不利于在博客中发布不同的单元块。 但Jupyter Notebook不一样,点击进入“file”后,你会看到一个“Download as”: ![]() 看到这7个选项后你就很开心了,其中最常用的是.ipynb文件。你也可以用nbconvert选项手动将笔记本转换为不同的格式,如HTML和PDF。 此外,你还可以使用jupyterhub,它允许你在其服务器上托管笔记本并与多个用户共享。许多顶尖的研究项目都把这作为协作方式。 10. JupyterLab JupyterLab是今年2月推出的一个工具,从某种程度上来说,它是Jupyter Notebook的一个发展——拥有同样的组件,但允许更灵活和更强大的项目工作方式。换句话说,它的用户体验更好。 ![]() JupyterLab的特色是允许用户在一个窗口内安排笔记本、终端、文本文件和输出的工作区,这个MATLAB很像。你可以把窗口拖到你想要的位置,也可以通过实时预览编辑常用文件格式,如Markdown、CSV和JSON,实时查看项目进展。 ![]() 我们可以通过这个网址直接进入lab。而notebook不能 ![]() 他需要: ![]() 不过我试了试lab,感觉有一些bug。就还是先用notebook吧, 11. 实践和技巧 虽然自己钻研很有趣,但无论是学习还是工作,大部分时候你是在一个团队中工作的。在这种情况下,你要规范自己的操作和实践,确保笔记本中的代码和注释都是正确的,方便其他人阅读、理解。以下是一些实践指标,仅供参考: 对每个程序员来说最重要的事:要好好注释! 确保你保存了代码文档。 形成一套命名体系,并在实践中落到实处,方便自己和他人理解。 在刚开始的时候导入所需的库,并在旁边注释导入目的。 确保代码行距合适,你也不想别人因为看不懂你的循环和函数疯掉,对吧? 当代码越来越多时,隐藏不重要代码,确保干净整洁。 此外,当你需要把成果演示给别人看时(是的你又要做该死的PPT了),你是可以偷懒直接在Jupyter Notebook里做演示的。 找到“View”,点开其中的“Cell Toolbar”,然后是“Slideshow”。每个代码块都在右侧显示一个名为“Slide Type”的下拉选项: ![]() 具体效果如何,请自己尝试。 值得注意的是如果你在主页看到文件变绿,说明它有过改动。 ![]() 就会在文件夹里面出现一个checkpoint。感觉很像git。 ![]() 提醒一点 ![]() 每当改变的时候一定要切换到命令模式按s。 ![]() 点击文件中的revert to checkpoint。 ![]() 和git不同的是,这个操作不可逆。 ![]() 看到输出的结果还在,不过代码没了。 https://blog.csdn.net/DataCastle/article/details/78890469 ![]() 一些魔法函数: ![]() 注意这些命令是在Python kernel中适用的,其他 kernel 不一定适用 还是安装几个有用的插件:https://mp.weixin.qq.com/s?__biz=MzI3ODkxODU3Mg%3D%3D&mid=2247485697&idx=2&sn=cfd494920bc59c62e192ee475bc01b9d&chksm=eb4eedc2dc3964d40a6df962cde5fdfc6ccd2cbb88c423b24d479754b992e5430cdeebea9da4 pip install jupyter_nbextensions_configurator jupyter_contrib_nbextensions jupyter contrib nbextension install --user jupyter nbextensions_configurator enable --user 更多配置细节,请前往jupyternbextensionsconfigurator的github。 1.Collapsible headings这个扩展在大型Notebook中非常有用,可折叠的标题能帮你收起/放下Notebook中的某些内容,使整个页面看起来更干净整洁。 ![]() 这个还是不能用在jupyter 6上,没办法,我重新下了一个jupyter notebook5.7.8。 ![]() 这是Jupyter Notebook中的通知机制,有时如果需要跑一些耗时较久的任务,你会把它放在一边自己去做别的事,而Notify功能就能在任务处理完后及时向你发送通知。 ![]() 这个真的是很有用了。需要注意的是,如果你想启用通知功能,首先你要勾选Notify扩展,其次再点击按钮正式启动。你选择的时间是Jupyter Notebook运行的最短时间,到点后它会向你发送通知。另外,请确保这个过程中Jupyter Notebook在浏览器中处于被打开状态。 3.Code folding在Jupyter Notebook中,你能折叠的不只有标题,还有代码。 ![]() 这事实上不是Notebook原有的插件。tqdm原本是一个Python模块,它可以为循环代码显示执行进度条,但有时它无法在Jupyter Notebook上工作。几天前,Jupyter Notebook新加入了tqdm_notebook扩展,从此你就无需再为进度条担忧了, tqdm是一个包。参考: https://blog.csdn.net/weixin_41596463/article/details/86594252 和https://www.cnblogs.com/feffery/p/10343544.html ![]() 这也不是Notebook原生的。它最初是IPython magic的一个命令,支持两种激活调试器的方式:一是在执行代码之前激活调试器,二是在验尸模式下激活调试器。简而言之,就是当代码出现异常后,输入%debug可以直接激活调试器跳到出现错误的地方,而且你还可以检查前后代码情况。它实现了即时调试+快速迭代,更多细节可以参考Radek Osmulski的推文。 ![]() ![]() %lsmagic:执行%lsmagic,它会列出所有可用的IPython magics。 Zen mode extension:隐藏活动状态栏,方便你把注意力集中在代码上。 Execute time extension:显示运行的时间。 autoreload:无需退出Jupyter Notebook就能动态修改代码。它的具体操作是: %load_ext autoreload %autoreload 2 jupyter还有一些技巧,参考: https://blog.csdn.net/create115721/article/details/79243641 高手们都知道,快捷键可以节省很多时间。Jupyter在顶部菜单提供了一个快捷键列表:Help > Keyboard Shortcuts 。每次更新Jupyter的时候,一定要看看这个列表,因为不断地有新的快捷键加进来。另外一个方法是使用Cmd + Shift + P ( Linux 和 Windows下 Ctrl + Shift + P亦可)调出命令面板。这个对话框可以让你通过名称来运行任何命令——当你不知道某个操作的快捷键,或者那个操作没有快捷键的时候尤其有用。这个功能与苹果电脑上的Spotlight搜索很像,一旦开始使用,你会欲罢不能。 Esc + F 在代码中查找、替换,忽略输出。 Esc + O 在cell和输出结果间切换。 选择多个cell: Shift + J 或 Shift + Down 选择下一个cell。 Shift + K 或 Shift + Up 选择上一个cell。 一旦选定cell,可以批量删除/拷贝/剪切/粘贴/运行。当你需要移动notebook的一部分时这个很有用。 Shift + M 合并cell. 有一点已经众所周知。把变量名称或没有定义输出结果的语句放在cell的最后一行,无需print语句,Jupyter也会显示变量值。当使用Pandas DataFrames时这一点尤其有用,因为输出结果为整齐的表格。 这个和在控制台里是一样的,实际上ipython就是用的控制台。 鲜为人知的是,你可以通过修改内核选项ast_note_interactivity,使得Jupyter对独占一行的所有变量或者语句都自动显示,这样你就可以马上看到多个语句的运行结果了。 In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" In [2]: from pydataset import data quakes = data('quakes') quakes.head() quakes.tail() Out[2]: lat long depth mag stations 1 -20.42 181.62 562 4.8 41 2 -20.62 181.03 650 4.2 15 3 -26.00 184.10 42 5.4 43 4 -17.97 181.66 626 4.1 19 5 -20.42 181.96 649 4.0 11 Out[2]: lat long depth mag stations 996 -25.93 179.54 470 4.4 22 997 -12.28 167.06 248 4.7 35 998 -20.13 184.20 244 4.5 34 999 -17.40 187.80 40 4.5 14 1000 -21.59 170.56 165 6.0 119 如果你想在各种情形下(Notebook和Console)Jupyter都同样处理,用下面的几行简单的命令创建文件~/.ipython/profile_default/ipython_config.py即可实现: c = get_config() # Run all nodes interactively c.InteractiveShell.ast_node_interactivity = "all" 也就是修改最后一个就可以,没有就添加。 ![]() ![]() 这个重启了之后也不是很有用。还是得导入 ![]() 在Help 菜单下,你可以找到常见库的在线文档链接,包括Numpy,Pandas,Scipy和Matplotlib等。 另外,在库、方法或变量的前面打上?,即可打开相关语法的帮助文档。 In [3]: ?str.replace() Docstring: S.replace(old, new[, count]) -> str Return a copy of S with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. Type: method_descriptor ![]() 在notebook里作图,有多个选择: - matplotlib (事实标准)(http://matplotlib.org/),可通过%matplotlib inline 激活,https://www.dataquest.io/blog/matplotlib-tutorial/- %matplotlib notebook 提供交互性操作,但可能会有点慢,因为响应是在服务器端完成的。 - mpld3(https://github.com/mpld3/mpld3) 提供matplotlib代码的替代性呈现(通过d3),虽然不完整,但很好。 - bokeh(http://bokeh.pydata.org/en/latest/) 生成可交互图像的更好选择。 - plot.ly(https://plot.ly/) 可以生成非常好的图,可惜是付费服务。 ![]() 上文提到的%matplotlib inline 是Jupyter Magic命令之一。 ![]() 不必重启jupyter服务器进程,也可以管理notebook的环境变量。有的库(比如theano)使用环境变量来控制其行为,%env是最方便的途径。 In [55]: # Running %env without any arguments # lists all environment variables # The line below sets the environment # variable OMP_NUM_THREADS %env OMP_NUM_THREADS=4 env: OMP_NUM_THREADS=4 ![]() %run 可以运行.py格式的python代码——这是众所周知的。不那么为人知晓的事实是它也可以运行其它的jupyter notebook文件,这一点很有用。 注意:使用%run 与导入一个python模块是不同的。 In [56]: # this will execute and show the output from # all code cells of the specified notebook %run ./two-histograms.ipynb ![]() ![]()
这种运行和脚本运行是一样的,单独列出变量名不会打印。 该操作用外部脚本替换当前cell。可以使用你的电脑中的一个文件作为来源,也可以使用URL。 In [ ]: # Before Running %load ./hello_world.py In [61]: # After Running # %load ./hello_world.py if __name__ == "__main__": print("Hello World!") ![]() %store 命令可以在两个notebook文件之间传递变量。 In [62]: data = 'this is the string I want to pass to different notebook' %store data del data # This has deleted the variable Stored 'data' (str) 现在,在一个新的notebook文档里…… In [1]: %store -r data print(data) this is the string I want to pass to different notebook ![]() ![]() ![]() 当然源文档里也能用。 不加任何参数, %who 命令可以列出所有的全局变量。加上参数 str 将只列出字符串型的全局变量。 In [1]: one = "for the money" two = "for the show" three = "to get ready now go cat go" %who str one three two 使用%%writefile magic可以保存cell的内容到外部文件。 而%pycat功能相反,把外部文件语法高亮显示(以弹出窗方式)。 In [7]: %%writefile pythoncode.py import numpy def append_if_not_exists(arr, x): if x not in arr: arr.append(x) def some_useless_slow_function(): arr = list() for i in range(10000): x = numpy.random.randint(0, 10000) append_if_not_exists(arr, x) Writing pythoncode.py In [8]: %pycat pythoncode.py import numpy def append_if_not_exists(arr, x): if x not in arr: arr.append(x) def some_useless_slow_function(): arr = list() for i in range(10000): x = numpy.random.randint(0, 10000) append_if_not_exists(arr, x) 还有更多请去https://blog.csdn.net/create115721/article/details/79243641 里面有很多有意思的地方。 还有一个比较重要的地方,代码补全。 ![]() 可以看到是有的,但是似乎不太好用,没有办法选中。参考https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9385266057303836218%22%2C%22sourceFrom%22%3A%22bjh%22%7D . 执行 Shell 命令 在技术或编程文本中,shell 表示使用文本与计算机进行交互的方式。最流行的 Unix shell 是 Bash(Bourne Again SHell),Bash 是 Linux 机器上终端默认的 shell。 在使用 Python 工作时,你会经常在写 Python 代码和使用 shell 命令之间来回切换。例如,你想使用 Python 读取磁盘中的某份文件,而这需要你确认文件名。通常情况下,你需要在终端输入 ls,获得当前目录的所有文件和文件夹列表。但这样来回切换非常繁琐低效。 很炫酷的是,Jupyter 能够执行 Shell 命令,你甚至无需离开浏览器。只需要在 shell 命令前加一个感叹号!,Jupyter 会将其转换为 Bash。在任一命令前加感叹号!,它们就可以在 Python Jupyter Notebook 中运行。 # Listing folder contents>>> !lsmynotebook.ipynb stuff.txt# Getting the current directory>>> !pwd/home/george/github/project_1# Printing from Bash >>> !echo "Pizza is delicious!"Pizza is delicious! 我们还可以将 shell 命令的输出分配给 Python 变量,如下所示: # Getting the current directory. # The variable "X" now contains ["/home/george/github/project_1"]X = !pwd ![]() 这个应该得在linux下。 2. 更换主题 ![]() 要想安装该插件,你只需在终端中运行以下 pip 命令: pip install jupyterthemes 运行以下命令,可得到可用的主题列表: jt -l 截至本文写作时,可选择的主题包括: chesterishgrade3gruvboxdgruvboxlmonokaioceans16onedorksolarizeddsolarizedl 查看这些主题,如下图所示,我们拥有大量不同的颜色选择。 ![]() solarizedd(左),gruvboxl(中),grade3(右)。 ![]() Hinterland 代码补全是大部分 IDE 都具备的常见功能,比如 PyCharm。开发者喜欢这个功能,因为这使得他们的工作更加简单,开发者无需记住每一个命令,IDE 会准备好一切。 ![]() Hinterland 可在 Jupyter Notebook 内完成代码补全。在键入过程中,你会看到一些代码补全建议。尤其是当你搜索外部库的命令时(示例如下所示)。这简直太方便了! 拆分单元格(Split Cells) 拆分单元格允许开发者并排查看 2 个单元格。当你有两个相关单元格时(比如描述及其对应的图示),这个功能非常方便。 ![]() Enter command mode (esc), use shift-s to toggle the current cell to either a split cell or full width. 4. 使用 Qgrid 探索 Dataframes 最后一站是 Qgrid,该工具允许开发者在不使用复杂 Pandas 代码的情况下,探索和编辑数据帧。Qgrid 可在 Jupyter notebook 中以交互的方式渲染 pandas 数据帧,这样你就可以执行一些直观的控制,如滚动、排序和筛选,以及双击单元格编辑数据帧。 我们首先安装 Qgrid: pip install qgrid jupyter nbextension enable --py --sys-prefix widgetsnbextension 要想使用 Qgrid 渲染数据帧,开发者只需导入 Qgrid,然后将数据帧输入到 show_grid 函数: import qgridqgrid_widget = qgrid.show_grid(df, show_toolbar=True)qgrid_widget 这样,你可以对数据帧执行大量交互式操作: 添加和删除行;筛选行;编辑单元格。 将更多参数输入 show_grid 函数可以执行其他交互式操作。关于 Qgrid 的全部功能,参见:https://github.com/quantopian/qgrid。 ![]() 以上就是强化 Jupyter Notebook 功能的 4 种方法。 可以参考https://blog.csdn.net/langhailove_2008/article/details/79229610 和https://www.itcodemonkey.com/article/8938.html jt -t oceans16 -N -T 可以更换主题。 参考https://blog.csdn.net/StarCoder_WangYue/article/details/86549269 和https://blog.csdn.net/panshangfeng/article/details/100731033 可以修改字体大小。 jt -t monokai -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T -N 之所以选这个主题是因为感觉和sublime很像。 ![]() 我似乎没有出现差两个字符的问题。 选中单词高亮可以选择颜色。 ![]() 代码补全我也测试过了,非常好。 如果以上内容有什么问题,欢迎联系交流。 ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |